home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / c_text.zip / DRAW_BOX.ASM < prev    next >
Assembly Source File  |  1987-06-17  |  3KB  |  119 lines

  1. URIGHT          EQU     187
  2. ULEFT           EQU     201
  3. LRIGHT          EQU     188
  4. LLEFT           EQU     200
  5. HORIZONTAL      EQU     205
  6. VERTICAL        EQU     186
  7.  
  8. _TEXT   SEGMENT BYTE    PUBLIC  'CODE'
  9.         ASSUME  CS:_TEXT
  10.  
  11.         PUBLIC  _DRAW_BOX
  12. _DRAW_BOX       PROC    NEAR
  13.         PUSH    BP
  14.         MOV     BP,SP
  15.         PUSH    DI
  16.         PUSH    SI
  17.         PUSH    DS
  18.         PUSH    ES
  19.  
  20.         MOV     BL,[BP+12]
  21.         MOV     DH,[BP+4]
  22.         MOV     DL,[BP+6]
  23.         CALL    GOTO_XY
  24.         MOV     AL,ULEFT
  25.         MOV     CX,1
  26.  
  27.         CALL    PRINT_CHAR
  28.         INC     DL
  29.         CALL    GOTO_XY
  30.         MOV     CX,[BP+8]
  31.         SUB     CX,2
  32.         MOV     AL,HORIZONTAL
  33.         CALL    PRINT_CHAR
  34.         MOV     DL,[BP+8]
  35.         ADD     DL,[BP+6]
  36.         DEC     DL
  37.         CALL    GOTO_XY
  38.         MOV     CX,1
  39.         MOV     AL,URIGHT
  40.         CALL    PRINT_CHAR
  41.         MOV     CX,[BP+10]
  42.         SUB     CX,2
  43.         MOV     AL,VERTICAL
  44. DRAW_VERT:
  45.         PUSH    CX
  46.         MOV     CX,1
  47.         INC     DH
  48.         MOV     DL,[BP+6]
  49.         CALL    GOTO_XY
  50.         CALL    PRINT_CHAR
  51.         ADD     DL,[BP+8]
  52.         DEC     DL
  53.         CALL    GOTO_XY
  54.         CALL    PRINT_CHAR
  55.         POP     CX
  56.         LOOP    DRAW_VERT
  57.         INC     DH
  58.         MOV     DL,[BP+6]
  59.         CALL    GOTO_XY
  60.         MOV     AL,LLEFT
  61.         MOV     CX,1
  62.         CALL    PRINT_CHAR
  63.         INC     DL
  64.         CALL    GOTO_XY
  65.         MOV     CX,[BP+8]
  66.         SUB     CX,2
  67.         MOV     AL,HORIZONTAL
  68.         CALL    PRINT_CHAR
  69.         ADD     DL,[BP+8]
  70.         SUB     DL,2
  71.         CALL    GOTO_XY
  72.         MOV     CX,1
  73.         MOV     AL,LRIGHT
  74.         CALL    PRINT_CHAR
  75.  
  76.         POP     ES
  77.         POP     DS
  78.         POP     SI
  79.         POP     DI
  80.         POP     BP
  81.         RET
  82. _DRAW_BOX       ENDP
  83.  
  84.  
  85.         PUBLIC  PRINT_CHAR
  86. PRINT_CHAR      PROC    NEAR
  87.         PUSH    AX
  88.         PUSH    BX
  89.  
  90.         MOV     AH,9                    ;Service 9, print character
  91.         MOV     BH,0                    ;Display page 0
  92.         INT     10h
  93.  
  94.         POP     BX
  95.         POP     AX
  96.         RET
  97. PRINT_CHAR      ENDP
  98.  
  99.  
  100.  
  101.         PUBLIC  GOTO_XY
  102. GOTO_XY     PROC    NEAR
  103.         PUSH    AX
  104.         PUSH    BX
  105.  
  106.  
  107.         MOV     AH,2                    ;Service 2, Move cursor
  108.         XOR     BH,BH                   ;Page 0
  109.         INT     10h
  110.  
  111.         POP     BX
  112.         POP     AX
  113.         RET
  114. GOTO_XY ENDP
  115.  
  116. _TEXT   ENDS
  117.         END
  118.  
  119.